package cn.xorange.commons.security.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author : yangjian
 * @date : 2023/11/25
 * @description :
 */
@Component
public class LoginHandlerFactory {

    private static final Map<String, LoginHandler> sysLoginHandlerMap = new HashMap<>();

    @Autowired
    List<LoginHandler> sysLoginHandlerList = Collections.emptyList();

    @PostConstruct
    public void init(){
        //初始化加载所有的抽象认证的实例方法，并放入到内存map中
        for(LoginHandler loginHandler : sysLoginHandlerList){
            sysLoginHandlerMap.put(loginHandler.getLoginSysAndType(),loginHandler);
        }
    }

    public LoginHandler getLoginHandler(String sysType, String loginType){
        String key = sysType + ":" + loginType;
        return sysLoginHandlerMap.get(key);
    }

}
